package xkp.lesson5;

import xkp.lesson.entity.Person;

public class Demo2 {
	public static void main(String[] args) {
		//引用数据类型的变量实际上存储的是地址
		Integer integer1 = 100;
		//Person person = 100;
		int num = 100;
		Integer integer111 = num;
		//此处调用Integer.valueOf(100)对基本数据100进行包装
		//把基本数据类型给包装成一个对象
		String str11 = "abc";//因为"abc"就是引用数据类型
		
		
		//又因为Integer自带常量池,常量池里面是一个个的Integer对象
		//这些对象的范围-128---127
		//如果赋给Integer的值在这个范围中，则直接把常量池的引用返回
		Integer integer11 = Integer.valueOf(100);
		Integer integer1111 = Integer.valueOf(num);
		Integer integer2 = 100;
		System.out.println(integer1 == integer2);
		//为什么此处打印的是false，此处是在面试时经常出现的一道面试题
//		Integer integer11 = 200;
//		Integer integer12 = 200;
//		System.out.println(integer11 == integer12);
		//如果超过常量池，则直接在堆中重新new一个对象
		Integer integerabc1 = 200;
		Integer integerabc2 = 200;
		System.out.println(integerabc1 == integerabc2);
		
		//String的常量区很大，如果没有，则先放入常量区，所以是动态的
		//Integer的常量池去有范围，且不可变，只能通过调整JVM参数改变。
		
		
	}
}
